package com.alameda.service.user;

import com.alameda.common.commonpent.mp.BaseService;
import com.alameda.pojo.user.ApUserDO;
import com.alameda.user.dto.ApUserDTO;
import com.alameda.user.vo.ApUserVO;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.Map;

/**
 * 移动端用户 业务逻辑层
 *
 * @author Lv
 * @date 2024/09/22
 */
public interface ApUserService extends BaseService<ApUserDO> {
    /**
     * 登录移动端
     *
     * @param apUserDTO 移动端用户信息
     * @return
     */
    Map<String, Object> login(ApUserDTO apUserDTO);

    /**
     * 获取当前登录用户信息
     *
     * @return
     */
    ApUserVO getInfo();

    /**
     * 退出登录
     *
     * @return
     */
    Boolean logout();

    /**
     * 查询用户列表
     *
     * @param apUserDTO 移动端用户信息
     * @return
     */
    IPage<ApUserVO> listUserInfo(ApUserDTO apUserDTO);

    /**
     * 保存用户
     *
     * @param apUserDTO 移动端用户信息
     * @return
     */
    Boolean saveUser(ApUserDTO apUserDTO);

    /**
     * 修改用户
     *
     * @param apUserDTO 移动端用户信息
     * @return
     */
    Boolean updateUser(ApUserDTO apUserDTO);

    /**
     * 导出excel
     *
     * @param apUserDTO 移动端用户信息
     */
    void exportExcel(ApUserDTO apUserDTO);

    /**
     * 通过账号查询用户信息
     *
     * @param username 账号
     * @return
     */
    default ApUserDO findByUserName(String username) {
        return this.findOne(ApUserDO.builder().username(username).build());
    }

    /**
     * 处理移动端token续期
     *
     * @param token 登录令牌
     * @return
     */
    Boolean dealApUserTokenRenewal(String token);
}
